package page

import (
	"blog/model"
	"blog/service/data"
	"errors"

	"github.com/gin-gonic/gin"
)

type AdminLinkPageService struct {
	linkDataService *data.LinkDataService
}

func NewAdminLinkPageService() *AdminLinkPageService {
	return &AdminLinkPageService{
		linkDataService: &data.LinkDataService{},
	}
}

// GetAllLinks 获取所有链接（后台管理）
func (s *AdminLinkPageService) GetAllLinks(ctx *gin.Context) ([]model.LinkData, error) {
	return s.linkDataService.GetLinks(ctx, 0)
}

// CreateLink 创建链接（后台管理）
func (s *AdminLinkPageService) CreateLink(ctx *gin.Context, link *model.LinkData) error {
	// 页面层处理：数据验证
	if link.Title == "" {
		return errors.New("标题不能为空")
	}
	if link.Link == "" {
		return errors.New("链接地址不能为空")
	}

	// 后台添加的直接显示
	link.IsShow = 1

	// 调用数据服务层创建链接
	return s.linkDataService.CreateLink(ctx, link)
}

// ValidateLinkForm 验证链接表单
func (s *AdminLinkPageService) ValidateLinkForm(ctx *gin.Context, link *model.LinkData, form map[string][]string) error {
	return s.linkDataService.ValidateLinkForm(ctx, link, form)
}

// CreateLinkData 创建 LinkData 实例（页面层）
func (s *AdminLinkPageService) CreateLinkData() *model.LinkData {
	return &model.LinkData{}
}
